package com.baichang.taoshunda.service;

import com.baichang.framework.excelption.ServiceException;

import java.util.List;
import java.util.Map;

/**
 * Created by ${wushenglu} on 17/08/24.
 */
public interface AddressService {
    /**
     * 查询用户地址
     *
     * @param userId 用户编号
     * @return
     */
    List<Map<String, Object>> getAddressList(int userId);

    /**
     * 添加收货地址
     *  @param userId      用户编号
     * @param address     详细地址
     * @param area        地区
     * @param telephone   手机号
     * @param name        收货人
     * @param isDefault   是否默认   1 默认  0不是默认
     * @param houseNumber
     * @param ulng
     * @param ulat        @return
     * @param cityId
     * @param areaId
     */
    boolean addAddress(int userId, String address, String area, String telephone, String name, int isDefault, String houseNumber, double ulng, double ulat, int cityId, int areaId) throws ServiceException;

    /**
     * 修改用户地址
     *  @param id          地址编号
     * @param userId      用户编号
     * @param address     详细地址
     * @param area        地区
     * @param telephone   手机号
     * @param name        收货人
     * @param isDefault   是否默认   1 默认  0不是默认
     * @param houseNumber
     * @param ulng
     * @param ulat        @return
     * @param cityId
     * @param areaId
     */
    boolean updateAddress(int id, int userId, String address, String area, String telephone, String name, int isDefault, String houseNumber, double ulng, double ulat, int cityId, int areaId) throws ServiceException;

    /**
     * 删除地址
     *
     * @param id 地址编号
     * @return
     */
    boolean deleteDeliveryAddressById(Long id) throws ServiceException;

    /**
     * 修改默认地址
     *
     * @param id
     * @param userId
     * @return
     */
    boolean updateDefaultAddress(Integer id, Integer userId) throws ServiceException;

    /**
     * 获取默认地址
     *
     * @param userId 用户编号
     * @return
     */
    Map<String, Object> getDefaultAddress(Integer userId) throws ServiceException;

    /**
     * 根据城市名称获取城市编号
     *
     * @param cityName
     * @param level
     * @return
     */
    Map<String, Object> getCityIdByName(String cityName, Integer level);
}
